
package com.femass.repository.infra;

import java.util.List;
import com.femass.model.Artigo;
import com.femass.model.Revisor;
import com.femass.model.Tema;
import org.hibernate.Session;
import com.femass.repository.ArtigoRepository;
import com.femass.util.FacesUtil;
import javax.faces.application.FacesMessage;


public class ArtigoRepositoryHibernate implements ArtigoRepository{

    
    @Override
    public void salvar(Artigo artigo) {
        Session session =  (Session) FacesUtil.getRequestAttribute("session");
      
        try {          
            session.save(artigo);
            FacesUtil.adicionarMensagem(FacesMessage.SEVERITY_INFO, "Artigo salvo com sucesso!");
        } catch (Exception e) {
            e.printStackTrace();
          FacesUtil.adicionarMensagem(FacesMessage.SEVERITY_FATAL, "Artigo não foi salvo!");
        } 
        
    }

    @Override
    public Artigo porCodigo(Integer codigo) {
        Session session =  (Session) FacesUtil.getRequestAttribute("session");
        return (Artigo) session.get(Artigo.class, codigo);
    }

    @Override
    public List<Artigo> todos() {
        Session session =  (Session) FacesUtil.getRequestAttribute("session");
        return session.createCriteria(Artigo.class)
                .list();
    }

    @Override
    public List<Artigo> porTema(Tema tema) {
        Session session =  (Session) FacesUtil.getRequestAttribute("session");
        return session.getNamedQuery("Artigo.findByTema")
                .setParameter("tema", tema)
                .list();
    }
    
}
